package com.dai.rpc.loadbanlance;


import com.dai.rpc.message.RpcRequest;

import java.net.InetSocketAddress;
import java.util.List;
import java.util.Set;

/**
 * 负载均衡策略
 */
public interface LoadBalance {


    String name();

    /**
     * 根据负载均衡策略从zookeeper可用的服务列表中返回一个实例信息
     * @param serviceUrlList
     * @param rpcRequest
     * @return
     */
    String selectServiceAddress(List<String> serviceUrlList, RpcRequest rpcRequest);

    /**
     * 根据负载均衡策略从内存缓存可用的服务列表中返回一个实例信息
     * @param services
     * @return
     */
    InetSocketAddress loadBalance(Set<String> services);

}
